/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package blogic;

import bentity.beCombo;
import bentity.beProducto;
import bentity.beProveedor;
import dao.daoHelper;
import dao.daoProveedor;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import visual.Seguridad.visualHelper;

/**
 *
 * @author chokewanka
 */
public class blProveedor {
    public static final int EXITO=0;
    public static final int ERROR=-1;
    private int resultadoSQL;

    public ArrayList<beProveedor> obtenerTodosLosProveedores() throws Exception{
        return (new daoProveedor()).todosLosProveedores();
    }

    public ArrayList<beCombo> llenarComboProveedor(boolean colocarElementoPorDefault, String textoPorDefault)throws Exception{

            ArrayList<beProveedor> arrProveedores = new ArrayList<beProveedor>();
            arrProveedores = (new blProveedor()).obtenerTodosLosProveedores();
            ArrayList<beCombo> comboProveedor = new ArrayList<beCombo>();
            beCombo cmb = new beCombo();
            if (colocarElementoPorDefault) {
                cmb.setId_dato(0);
                cmb.setNom_dato(textoPorDefault);
                cmb.setNom_combo("PROVEE");
                comboProveedor.add(cmb);
            }
            for (int i = 0; i < arrProveedores.size(); i++) {
                cmb = new beCombo();
                cmb.setId_dato(arrProveedores.get(i).getId_Proveedor());
                cmb.setNom_dato(arrProveedores.get(i).getRazon_Social());
                cmb.setNom_combo("PROVEE");
                comboProveedor.add(cmb);
            }
            return comboProveedor;

    }

    public ArrayList<beProveedor> dameProveedoresDeUnProducto(int idProducto) throws Exception{

            return (new daoProveedor()).dameProveedoresDeUnProducto(idProducto);

    }

    public ArrayList<beProveedor> busquedaProveedorBL(String razonProveedor, String rucProveedor, String direccionProveedor, String contactoProveedor, String emailProveedor, String telefonoProveedor) throws Exception{

        ArrayList<beProveedor> listaProveedores=(new daoProveedor()).busquedaProveedoresDAO(razonProveedor, rucProveedor, direccionProveedor, contactoProveedor,emailProveedor,telefonoProveedor);

        return listaProveedores;
    }

    public int dameIdEstadoProveedor(String nombreEstado) throws Exception{
        
            int idEstado = -1;
            if (!esEstadoValido(nombreEstado)) {
                return idEstado;
            }
            idEstado = (new daoHelper()).dameIdEstado(nombreEstado, beProveedor.nombreCombo);
            return idEstado;
        
    }

    private boolean esEstadoValido(String nombreEstado) {
        if(nombreEstado.equals(beProveedor.nombreActivo)) return true;
        else if(nombreEstado.equals(beProveedor.nombreInactivo)) return true;
        return false;
    }

    public String dameNombreEstadoProveedor(int idEstado)throws Exception{
        
            String nombreEstado = "";
            nombreEstado = (new daoHelper()).dameNombreEstado(idEstado, beProveedor.nombreCombo);
            return nombreEstado;
        
    }

    public boolean estaActivo(int idEstado)throws Exception{
        return this.dameNombreEstadoProveedor(idEstado).equals(beProveedor.nombreActivo);
    }

    public boolean estaInactivo(int idEstado)throws Exception{
        return this.dameNombreEstadoProveedor(idEstado).equals(beProveedor.nombreInactivo);
    }

    public int registrarProveedor(beProveedor pv) throws Exception{
        if(pv==null) return ERROR;

        return (new daoProveedor()).registrarProveedor(pv);

    }

    public int modificarProveedor(beProveedor pv) throws Exception{
        if(pv==null) return ERROR;

        if(pv.getId_Proveedor()<0) return ERROR;

        this.resultadoSQL=(new daoProveedor()).modificarProveedor(pv);

        if(this.resultadoSQL==daoHelper.TRANSACCION_FALLIDA) return ERROR;

        return EXITO;
    }

    public beProveedor obtenerProveedorPorCodigo(int idProveedor) throws Exception{
        
            if(idProveedor<0) return null;
            return (new daoProveedor()).busquedaProveedorPorID(idProveedor);
        
    }

    public int eliminarProducto(int idProveedor) throws Exception{
        if(idProveedor<0) return ERROR;

        int estado=(new blProveedor()).dameIdEstadoProveedor(beProducto.nombreInactivo);

        this.resultadoSQL=(new daoProveedor()).cambiarEstadoAProducto(idProveedor,estado);

        if(resultadoSQL==daoHelper.TRANSACCION_FALLIDA) return ERROR;

        return EXITO;
    }

    public int cantidadDeProductosDeUnProveedor(int idProveedor) throws Exception{
        return (new daoProveedor().cantidadDeProductosDeUnProveedor(idProveedor));
    }

}
